#ifndef __SIMUTILS_H__
#define __SIMUTILS_H__

#include "stdio.h"
#include "stdlib.h"
#include "simdatatypes.h"
#include <string.h>

typedef struct inst_number_t
{
	ulonglong numTotal;
	ulonglong numLoad;
	ulonglong numBranch;
	ulonglong numStore;
	ulonglong numComp;
}inst_number_s;

typedef struct inst_cycle_t
{
	ulonglong cycleTotal;
	ulonglong cycleLoad;
	ulonglong cycleBranch;
	ulonglong cycleStore;
	ulonglong cycleComp;
}inst_cycle_s;

typedef struct results_t
{
        ulonglong executeTime;

        ulong instRefs;
        ulong dataRefs;

        inst_number_s numInstr;
        inst_cycle_s cycleInstr;

        ulonglong hitCount[3];
        ulonglong missCount[3];
        ulonglong accessTotal[3];
        ulong kickouts[3];
        ulong dirtykickouts[3];
        ulong transfers[3];

}results_s;

void printResults(results_s* results);
void initResults(results_s* results);

#endif /*__SIMUTILS_H__*/
